python 01列表异或 |
您所在的位置:网站首页 › python 列表异或 › python 01列表异或 |
算术运算、比较运算、赋值运算、位和位运算、运算优先级 python里的算术运算 我们最熟悉的计算就是算术运算,加减乘除等。在python的算术运算中,除了四则运算外,还有幂运算、取模、取整运算。 什么是取模、取整运算呢?取模和取整运算和除法相关。取模即取除法的余数,取整即取除法的商。 11%7取模运算,结果为:4 11//7取整运算,结果为:1 如果是负数取模取整,会是怎样的结果呢? i1=-11%7i2=-11%-7i3=-11//7i4=-11//-7print(i1,i2,i3,i4)结果是:3 -4 -2 1 下面有一个混合运算,猜心算一下运行结果会是怎样的呢? 4*2**3//6+2%7-2 很显然,这里就牵涉到不同运算之间的优先级。 算术运算里,优先级从高到低是:幂运算、乘除取模取整、加减 4*2**3//6+2%7-2运行结果:5 和你心算的结果是不是一样呢? python里的比较运算 所谓的比较运算就是等于(==)、不等于(!=)、大于(>)、大于等于(>=)、小于( 9!=10运行结果:True 9!=9运行结果:False python里的赋值运算 在程序里,赋值也是一种运算。赋值的符号“=”,以后我们还会碰到诸如:“+=”、“-=”……等赋值运算。 来看一个范例: i=5+4==6-1 print(i)运行结果为:False 这个混合运算里有算术运算、比较运算和赋值运算,这些运算的优先级,从高到低依次是:算术运算、比较运算、赋值运算。 i=5+4==6-1 i=9==5 (9不等于5,所以此比较运算结果为False) i=False python里的位运算 什么是“位”? “位”是数据存储的最小单位。在计算机中二进制数系统中,每个0或1就是一个“位”,英文写作bit,简记为b,称为比特。“位”就如同下图中的格子,每一个格子就是一个“位”,而每一个“位”存储的数据只有两种可能,要么是“0”,要么是“1”。我们将8个“位”称为一个“字节”,英文是Byte。“位”和“字节”的转换公式是:8b=1B。字节大小的转换关系是这样的:1024B=1KB,1024KB=1MB,1024MB=1GB,1024GB=1TB…… 对于“位”有一些了解了。下面我们再来复习一下二进制。 和满10进一位的十进制不同,二进制是满2就要进一位的一种进制,二进制只有两个数值:0和1。如果你初次接触二进制,建议你不妨先做一个将十进制的0-10转换成二进制的练习。最容易犯错的地方是十进制的4和8。下图是十进制0-10对应的二进制,看看你转换对了没有。 有了“位”的理解和二进制的知识,我们就来探究一下基于二进制的位运算。 —— “&” 按位 与 的运算 ——按位与的运算规则是: 0 & 0 = 0 0 & 1 = 0 1 & 0 = 0 1 & 1 = 1 或许这个规则不太好理解,我借用电路来说明一下。 开关开就是“1”,关就是“0”;灯亮是“1”,灯灭是“0”。 尝试用python代码来实现一下:8&6 python的位运算也是先将十进制数值化为二进制后再进行的运算。 print(8&6)运算结果是:0 我们再来人工列式演算一下,一来校验结果,二来清晰地理解按位与的运算过程: 计算一下“10&6”呢?我们先人工列式演算一下: python代码来运行: print(10&6)运行的结果果真是:2 —— “ | ” 按位 或 的运算 ——按位或的运算规则是: 0 | 0 = 0 0 | 1 = 1 1 | 0 = 1 1 | 1 = 1 为了方便大家理解,我也同样借用电路来说明“按位或”的运算规则。 开关开就是“1”,关就是“0”;灯亮是“1”,灯灭是“0”。 我想算算“8|6”,用python代码来运算。 print(8|6) 运行结果是:14 我再来用python算一算“10|6” print(10|6)运行结果还是:14 嗯?怎么是一样的答案? 好吧,我们来人工列式演算一下,一来校验结果,二来清晰地理解按位或的运算过程: —— “ ^ ” 按位 异或 的运算 ——什么是“异或”?“异或”和“或”有什么不同呢? 我们用维恩图来做个说明: “异或”和“或”在运算上有怎样的不同呢?我列表做了一个对比。 两个计算的不同之处,我用黄色框凸显出来。 我们现在用python编码来算算“8^6” print(8^6)运行结果是:14 和“按位或”的计算结果一样,那么,“10^6”的计算结果也还是14吗? print(10^6) 运行结果是:12为什么“10^6”和“8^6”“按位或”的计算结果是一样的,但是“按位异或”的计算结果却不一样呢? 我们用人工列式演算一下,你是否看出其中的差别呢? 位运算还有“按位取反运算”、“左移动运算”和“右移动运算”,以后再慢慢学习。 此文原发表于知乎网站。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |